]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
dnd: Set the position and scale on the drag actor before it's reparented
authorJasper St. Pierre <jstpierre@mecheye.net>
Sun, 7 Apr 2013 18:58:25 +0000 (14:58 -0400)
committerJasper St. Pierre <jstpierre@mecheye.net>
Mon, 8 Apr 2013 18:57:49 +0000 (14:57 -0400)
We need to do this to ensure that it gets the correct scale, as otherwise
the transform that we retrieve will be incorrect.

https://bugzilla.gnome.org/show_bug.cgi?id=697504

js/ui/dnd.js

index 1841f4953191136adc71dfc922b49cc818232f17..763bd0494b66b17730c63feac57bb0ed558876f0 100644 (file)
@@ -291,19 +291,19 @@ const _Draggable = new Lang.Class({
             this._dragOrigY = this._dragActor.y;
             this._dragOrigScale = this._dragActor.scale_x;
 
-            this._dragActor.reparent(Main.uiGroup);
-            this._dragActor.raise_top();
-            Shell.util_set_hidden_from_pick(this._dragActor, true);
-
-            let [actorStageX, actorStageY] = this.actor.get_transformed_position();
-            this._dragOffsetX = actorStageX - this._dragStartX;
-            this._dragOffsetY = actorStageY - this._dragStartY;
-
             // Set the actor's scale such that it will keep the same
             // transformed size when it's reparented to the uiGroup
             let [scaledWidth, scaledHeight] = this.actor.get_transformed_size();
             this._dragActor.set_scale(scaledWidth / this.actor.width,
                                       scaledHeight / this.actor.height);
+
+            let [actorStageX, actorStageY] = this.actor.get_transformed_position();
+            this._dragOffsetX = actorStageX - this._dragStartX;
+            this._dragOffsetY = actorStageY - this._dragStartY;
+
+            this._dragActor.reparent(Main.uiGroup);
+            this._dragActor.raise_top();
+            Shell.util_set_hidden_from_pick(this._dragActor, true);
         }
 
         this._dragOrigOpacity = this._dragActor.opacity;